///////////////////////////////////////////////////////////////////////////////
//	FILENAME:	EPSWriting.m
//	SUMMARY:	Implementation of a EPSWriting category to NXImage
//	SUPERCLASS:	Object:NXImage(EPSWriting)
//	INTERFACE:	None
//	AUTHOR:		Rohit Khare (_EPSWritingImageView by Sharon Zahkour of NeXT)
//	COPYRIGHT:	(c) 1994 California Institure of Technology, eText Project
///////////////////////////////////////////////////////////////////////////////
//  IMPLEMENTATION COMMENTS
//		If there exists an NXEPSImageRep, write out the EPS code.
//		If not, create an offscreen window, draw the NXImage and save as EPS.
///////////////////////////////////////////////////////////////////////////////
//	HISTORY
//	07/16/94:	Created. Derived from TIFFtoEPS.app.
///////////////////////////////////////////////////////////////////////////////

#import <appkit/appkit.h>
#import "EPSWriting.h"

@implementation NXImage (EPSWriting)
- writeEPS:(NXStream *)stream
{
	id	repList;
	int	i,j;
	id theRep=nil;
	char *theCode;
	int	len;

	// choose find EPSRep if possible.
	repList = [self representationList];
	theRep = nil;
	i = [repList count];
	for(j=0; j<i; j++){
	if ([[repList objectAt:j] isKindOf:[NXEPSImageRep class]])
		theRep = [repList objectAt:j];
	}		
	if (theRep && [theRep isKindOf:[NXEPSImageRep class]]) {			
		[theRep getEPS:&theCode length:&len];
		NXWrite(stream, theCode, len);
	} else {
		// we need to convert a bitmap to EPS.
		NXRect 	rect;
		id		iv;
		
		iv = [[_FormatWritingImageView new] useImage:self];
    	[iv getFrame:&rect];
    	[iv copyPSCodeInside:&rect to:stream]; 
	}
	return self;
}
@end